#ifndef __COMPLEX_LEXER_H__
#define __COMPLEX_LEXER_H__

class Lexer
{
public:
	TokenRef nextToken(CharInputStream& stream);

private:
	TokenRef lexComplexTag(CharInputStream& stream);
	TokenRef lexAstar(CharInputStream& stream);
	TokenRef lexBrackets(CharInputStream& stream);
	TokenRef lexParentheses(CharInputStream& stream);
	TokenRef lexChildTag(CharInputStream& stream);
	TokenRef lexEqual(CharInputStream& stream);
	TokenRef lexDelimiter(CharInputStream& stream);
};


#endif //__COMPLEX_LEXER_H__
